/**
 * 
 */
package Dungeon;

import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;

import SquarePackage.NormalSquare;
import SquarePackage.Square;

/**
 * @author Brecht
 *
 */
public class ComposedDungeonTest {
	Dungeon dungeon1;
	ComposedDungeon dungeon2;
	Square square;
	/**
	 * @throws java.lang.Exception
	 */
	@Before
	public void setUp() throws Exception {
		dungeon1 = new Dungeon();
		dungeon2 = new ComposedDungeon(100,100,100);
		dungeon2.addDungeon(dungeon1, new Dimension(10,10,10));
		square = new NormalSquare();
		dungeon1.addSquare(square, new Dimension(3,5,16));
	}

	/**
	 * Test method for {@link Dungeon.ComposedDungeon#getDimensionOf(SquarePackage.Square)}.
	 */
	@Test
	public void testGetDimensionOf() {
		assertEquals(new Dimension(3,5,16).add(new Dimension(10,10,10)),dungeon2.getDimensionOf(square));
		assertEquals(new Dimension(3,5,16),dungeon1.getDimensionOf(square));
	}

	/**
	 * Test method for {@link Dungeon.ComposedDungeon#getSquareAt(Dungeon.Dimension)}.
	 */
	@Test
	public void testGetSquareAt() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.ComposedDungeon#removeSquareAt(Dungeon.Dimension)}.
	 */
	@Test
	public void testRemoveSquareAt() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.ComposedDungeon#closeDoor(SquarePackage.Square, SquarePackage.Direction)}.
	 */
	@Test
	public void testCloseDoor() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.ComposedDungeon#openDoor(SquarePackage.Square, SquarePackage.Direction)}.
	 */
	@Test
	public void testOpenDoor() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.ComposedDungeon#hasBeenUsed(SquarePackage.Square)}.
	 */
	@Test
	public void testHasBeenUsed() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.ComposedDungeon#addSquare(SquarePackage.Square, Dungeon.Dimension)}.
	 */
	@Test
	public void testAddSquare() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.ComposedDungeon#getAllSquares()}.
	 */
	@Test
	public void testGetAllSquares() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.ComposedDungeon#getUsedDimensions()}.
	 */
	@Test
	public void testGetUsedDimensions() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.ComposedDungeon#ComposedDungeon(long, long, long)}.
	 */
	@Test
	public void testComposedDungeonLongLongLong() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.ComposedDungeon#ComposedDungeon(Dungeon.Dimension)}.
	 */
	@Test
	public void testComposedDungeonDimension() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.ComposedDungeon#getDungeons()}.
	 */
	@Test
	public void testGetDungeons() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.ComposedDungeon#getDimensions()}.
	 */
	@Test
	public void testGetDimensions() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.ComposedDungeon#getAllDungeons()}.
	 */
	@Test
	public void testGetAllDungeons() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.ComposedDungeon#addDungeon(Dungeon.Subdungeon, Dungeon.Dimension)}.
	 */
	@Test
	public void testAddDungeon() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.ComposedDungeon#removeDungeon(Dungeon.Subdungeon)}.
	 */
	@Test
	public void testRemoveDungeon() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.ComposedDungeon#getRootDimension(Dungeon.Dimension, Dungeon.Subdungeon)}.
	 */
	@Test
	public void testGetRootDimension() {
		assertEquals(new Dimension(16,15,17), dungeon2.getRootDimension(new Dimension(16,15,17), dungeon2));
		assertEquals(new Dimension(13,15,26), dungeon1.getRootDimension(new Dimension(3,5,16)));
		}

	/**
	 * Test method for {@link Dungeon.Subdungeon#Subdungeon(long, long, long)}.
	 */
	@Test
	public void testSubdungeonLongLongLong() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.Subdungeon#Subdungeon(Dungeon.Dimension)}.
	 */
	@Test
	public void testSubdungeonDimension() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.Subdungeon#getMaxDimension()}.
	 */
	@Test
	public void testGetMaxDimension() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.Subdungeon#setMaxDimension(Dungeon.Dimension)}.
	 */
	@Test
	public void testSetMaxDimension() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.Subdungeon#isValidNewMaxDimension(Dungeon.Dimension)}.
	 */
	@Test
	public void testIsValidNewMaxDimension() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.Subdungeon#getRootDungeon()}.
	 */
	@Test
	public void testGetRootDungeon() {
		assertEquals(dungeon2, dungeon1.getRootDungeon());
		assertEquals(dungeon2, dungeon2.getRootDungeon());
	}

	/**
	 * Test method for {@link Dungeon.Subdungeon#getContainingDungeon()}.
	 */
	@Test
	public void testGetContainingDungeon() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.Subdungeon#hasContainingDungeon()}.
	 */
	@Test
	public void testHasContainingDungeon() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.Subdungeon#isValidDimension(Dungeon.Dimension)}.
	 */
	@Test
	public void testIsValidDimension() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.Subdungeon#isAvailable(Dungeon.Dimension)}.
	 */
	@Test
	public void testIsAvailable() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.Subdungeon#isValidSquare(SquarePackage.Square)}.
	 */
	@Test
	public void testIsValidSquare() {
		fail("Not yet implemented");
	}

	/**
	 * Test method for {@link Dungeon.Subdungeon#getSlipperyPercent()}.
	 */
	@Test
	public void testGetSlipperyPercent() {
		fail("Not yet implemented");
	}

}
